package com.x.framework.cqrs.server;

import com.x.framework.cqrs.dto.PurchaseOrderSummaryDto;

import java.util.List;

/**
 * 它具有多项职责，例如下订单，取消订单和查询产生不同类型结果的表。
 * 取消订单可能涉及其他业务逻辑，例如订单日期应在30天之内以及部分退款计算等。
 *
 * CQRS模式–读写接口
 *
 * 让我们将它们分成两个不同的接口，而不是只有一个接口负责所有的READ和WRITE操作，如下所示。
 *
 * 查询服务处理所有READ要求
 * 命令服务处理修改数据的所有其他要求
 */
public interface OrderService {

    void placeOrder(int userIndex, int productIndex);
    void cancelOrder(long orderId);
    List<PurchaseOrderSummaryDto> getSaleSummaryGroupByState();
    PurchaseOrderSummaryDto getSaleSummaryByState(String state);
    double getTotalSale();

}
